package com.cskaoyan.demo9.servlet;

import com.cskaoyan.demo9.bean.PageData;
import com.cskaoyan.demo9.bean.PageParameter;
import com.cskaoyan.demo9.bean.vo.BaseRespVo;
import com.cskaoyan.demo9.common.CommonServlet;
import com.cskaoyan.demo9.service.GoodsService;
import com.cskaoyan.demo9.util.JacksonUtil;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/admin/user/*")
public class AdminUserServlet extends CommonServlet {
    GoodsService goodsService;
    /**
     *  Servlet中保留 参数的获取
     *           保留 结果的封装
     *        其余部分提取出去
     */
    public void list(HttpServletRequest request, HttpServletResponse response) throws IOException {
        // 接收请求参数
        PageParameter pageParameter = PageParameter.init(request.getParameterMap());
        String username = request.getParameter("username");
        String mobile = request.getParameter("mobile");

        // 把业务相关部分(除了参数接收 结果封装)提取出去 → 业务方法 定义一个包 service
        // Servlet → service → mapper(dao)
        // 表示层(请求参数的接收和响应结果的封装)
        // 业务逻辑层(业务逻辑代码的处理，调用数据访问层的代码)
        // 数据访问层(数据库的操作) → MyBatis的Mapper
        // 三层架构
        PageData data = goodsService.list(pageParameter, username, mobile);

        // 封装BaseRespVo
        BaseRespVo baseRespVo = BaseRespVo.ok(data);

        String jsonStr = JacksonUtil.write(baseRespVo);
        response.getWriter().println(jsonStr);

    }
}
